package Array.easy;

import java.util.ArrayList;
import java.util.List;

/**
 * 1. 问题描述
 *      给定一个二维数组，将二维数组中行数最多的几行放置到一个集合中返回
 *      规定数组的每行的左侧都是0，右侧都是1
 *      {
 *          [0,0,0,1,1,1,1],
 *          [0,0,0,0,1,1,1],
 *          [0,0,0,0,0,0,0],
 *          [0,0,0,1,1,1,1],
 *          [0,0,0,0,0,0,1]
 *      }
 *
 * 2. 算法分析
 *      对于上述这个问题，我们将给出三种解法，逐层优化
 *      1. 线性法
 *
 *
 *      2. 二分法
 *
 *      3. 线性法 + 二分法
 *
 * 3. 代码实现
 */
@SuppressWarnings("all")
public class 返回二维数组的最多1的行数 {
    public static void main(String[] args) {

    }

    // 线性法
    public static List<Integer> getAllMaxRowNumber_linear(int[][] matrix) {
        List<Integer> res = new ArrayList<>(); // 记录结果
        int max = 0; // 设置一个全局的最大值记录每行中1的数量的最大值
        int row = matrix.length; // 二维数组的行数
        int col = matrix[0].length; // 二维数组的列数
        for (int i = 0; i < row; i++) {
            if (i == 0) {
                int temp = 0;
                int j = col-1;
                while(matrix[i][j] == 1 && j >= 0) {
                    temp++;
                    j--;
                    if (j == 0) {
                        break; // 说明当前行全是0
                    }
                }
                max = Math.max(max,temp);
                // 注意此时j指向的是当前行从右到左第一个为0的位置
            }
            else {
                //
            }
        }
        return res;
    }


}
